package com.hjt.gulimall.ware.dao;

import com.hjt.common.to.ware.SkuHasStockTo;
import com.hjt.gulimall.ware.entity.WareSkuEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品库存
 * 
 * @author huangjingtai
 * @email 970075985@qq.com
 * @date 2021-09-14 15:03:39
 */
@Mapper
public interface WareSkuDao extends BaseMapper<WareSkuEntity> {

    void addStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);

    // 根据skuid查询是否有库存
    List<SkuHasStockTo> querySkuHasStockBySkuIds(@Param("skuIdList") List<Long> skuIdList);

    // 根据skuId锁定库存
    int lock(@Param("skuId") Long skuId, @Param("nums") Integer nums, @Param("wareId") Long wareId);

    // 找出有库存的仓库id
    Long selectHasStockedWareId(@Param("skuId") Long skuId, @Param("nums") Integer nums);

    // 解锁库存
    void unlock(@Param("skuId") Long skuId, @Param("skuNum") Integer skuNum, @Param("wareId") Long wareId);
}
